package com.kfm.pm;

import java.util.Arrays;

public class Exec02 {

    public static void main(String[] args) {
        // 数组的交集
        // 给定两个各不包含重复元素的数组 arr 和 arr1 ，求 arr 和 arr1 的交集(在 arr 中有，
        // arr1 中也包含的元素集合)，将交集中的元素放到一个数组中并输出。
        int[] arr = {1, 4, 2, 3};
        int[] arr1 = {2, 3, 4, 5, 6};
        int[] union = union2(arr, arr1);
        System.out.println(Arrays.toString(union));
    }

    public static int[] union(int[] arr, int[] arr1) {
        int[] newArr = new int[arr1.length];
        for (int i = 0; i < arr.length; i++) { // 遍历arr的每个元素
            for (int j = 0; j < arr1.length; j++) { // 遍历arr1的每个元素
                if (arr[i] == arr1[j]) { // 只要arr的某个元素和arr1的某个元素相等
                    newArr[j] = arr1[j]; // 赋值到新数组
                }
            }
        }
        return newArr;
    }


    public static int[] union2(int[] arr, int[] arr1) {
        // Math.min(2, 3) = 2   Math.max(2, 3)  = 3
        int len = Math.min(arr.length, arr1.length);
        int[] newArr = new int[len];
        int count = 0; // 相同数据的个数
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr1.length; j++) {
                if (arr[i] == arr1[j]) {
                    newArr[count ++] = arr[i];
                }
            }
        }
        int[] arr_copy = new int[count];
        // 4,2,3, 0
        System.arraycopy(newArr, 0, arr_copy, 0, count);
        return arr_copy;
    }
}
